#列表
#可以使用 [] 来创建一个空列表
ls = []
print(type(ls))

#也可以利用 list 来创建一个空列表
ls = list()
print(type(ls))

#列表可以在创建时进行初始化，里面的类型可以是任何类型
ls = [1, 2, 3, 'hello', 1.0, True, [1, 3, 5]]
print(ls)

#可以通过下标来访问列表
print(ls[0])
print(ls[1])
print(ls[2])
print(ls[3])
print(ls[4])
print(ls[5])
print(ls[6][0])
#当下标超过列表元素索引，就会抛出异常
#print(ls[100])

#可以通过len函数来获得列表长度
print(len(ls))

#下标也可以为负数，实际上就是 len(ls) - 1
print(ls[-1])
print(ls[-2])
print(ls[-3])
print(ls[-4])
print(ls[-5])
print(ls[-6])
print(ls[-7])

#可以对列表进行切片操作，会返回列表的一部分
#ls[begin:end] 表示 [begin, end)
print(ls[1:2])
print(ls[1:4])

#还可以省略begin与end，省略 begin 从 0开始，省略end默认访问到最后一个元素
print(ls[:])
print(ls[:6])
print(ls[1:])

#还可以在切片操作中指定步长，省略默认为1
print(ls[1:6:2])
print(ls[::-1])

#利用 for 循环与下标来访问列表
ls = [[1,2,3], [4, 5, 6], [7, 8, 9]]
for lls in ls:
    for x in lls:
        print(x, end=' ')
    print()

for i in range(len(ls)):
    for j in range(len(ls[i])):
        print(ls[i][j], end = ' ')
    print()

#利用 append 方法在列表末尾添加一个元素
ls = [1, 2, 3, 'hello', 1.0, True, [1, 3, 5]]
ls.append('world')
print(ls)

#利用 insert 在任何一个位置插入一个元素
ls.insert(4, 'world')
print(ls)

#利用 in 关键字判断某个元素是否位于列表中
print(1 in ls)
print(1 not in ls)
print('hello' in ls)

#利用 index 方法来判断某个元素的位置
print(ls.index('hello'))
#如果列表中没有元素，index 会抛出异常
# print(ls.index("My name"))

#利用 pop 与 remove 方法删除元素
ls.pop()#删除最后一个元素
print(ls)
ls.pop(1)#删除下标为1的元素
print(ls)
ls.append("world")
print(ls)
ls.remove("world")#删除第一个值为'world'的元素
print(ls)

#利用 + 、extend 与 += 连接列表
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # a + b 返回一个新的列表对象，拷贝构造给 c，a 与 b 不变
print(c)
print(a)
print(b)

a.extend(b) # 将 b 的元素添加到 a 的后面，b 不变
print(a)
print(b)
print("*********************")
a += b #将 a 与 b 相加后的列表对象赋值给一个临时列表对象，再将临时列表对象拷贝赋值给 a
print(a)
print(b)




